/**********************************************************************
 * Filename: Participante.java
 * Created: 2012/04/23
 * @author Fernando Brito e Abreu
 **********************************************************************/
package iscte.es.copaPaises.businessLayer;

import java.util.Set;
import java.util.HashSet;

public abstract class Participante
{

	/**********************************************************************
	 * @return set with all instances of the current class
	 **********************************************************************/
	public static Set<Participante> allInstances()
	{
		Set<Participante> result = new HashSet<Participante>();
		result.addAll(Jogador.allInstances);
		result.addAll(Treinador.allInstances);
		return result;
	}

	CalendarDate data_nascimento;
	protected String nome;
	private Pais nacionalidade;

	/**********************************************************************
	 * Default constructor
	 **********************************************************************/
	public Participante()
	{
	}

	/**********************************************************************
	 * Parameterized constructor
	 * @param data_nascimento the data_nascimento to initialize
	 * @param nome the nome to initialize
	 * @param nacionalidade the nacionalidade to initialize
	 **********************************************************************/
	public Participante(CalendarDate data_nascimento, String nome, Pais nacionalidade)
	{
		this.data_nascimento = data_nascimento;
		this.nome = nome;
		this.nacionalidade = nacionalidade;
	}

	/**********************************************************************
	 * Standard attribute getter
	 * @return the data_nascimento of the participante
	 **********************************************************************/
	public CalendarDate data_nascimento()
	{
		return data_nascimento;
	}

	/**********************************************************************
	 * Standard attribute setter
	 * @param data_nascimento the data_nascimento to set
	 **********************************************************************/
	public void setData_nascimento(CalendarDate data_nascimento)
	{
		this.data_nascimento = data_nascimento;
	}

	/**********************************************************************
	 * Standard attribute getter
	 * @return the nome of the participante
	 **********************************************************************/
	public String nome()
	{
		return nome;
	}

	/**********************************************************************
	 * Standard attribute setter
	 * @param nome the nome to set
	 **********************************************************************/
	public void setNome(String nome)
	{
		this.nome = nome;
	}

	/**********************************************************************
	 * ONE2MANY getter for Participante[*] <-> Pais[1]
	 * @return the nacionalidade of the participante
	 **********************************************************************/
	public Pais nacionalidade()
	{
		return nacionalidade;
	}

	/**********************************************************************
	 * ONE2MANY setter for Participante[*] <-> Pais[1]
	 * @param nacionalidade the nacionalidade to set
	 **********************************************************************/
	public void setNacionalidade(Pais nacionalidade)
	{
		this.nacionalidade = nacionalidade;
	}

	/**********************************************************************
	 * User-defined operation specified in SOIL/OCL
	 * @param nome the nome to set
	 * @param data_nasce the data_nasce to set
	 * @param nacionalidade the nacionalidade to set
	 **********************************************************************/
	/*Method is never called
	public void inicializa(String nome, String data_nasce, Pais nacionalidade)
	{
		//	DONE
		//	self.nome := nome;
		//	 dummy := new CalendarDate;
		//	 self.data_nascimento := dummy.stringToDate(data_nasce);
		//	 destroy dummy;
		//	 insert (nacionalidade,self) into Pais_Participante;

		this.nome = nome;
		CalendarDate dummy = new CalendarDate();
		this.data_nascimento = dummy.stringToDate(data_nasce);
		dummy.destroy();
		this.nacionalidade = nacionalidade;



	}
*/
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	//@Override
	/**********************************************************************
	 * Object serializer
	 **********************************************************************/
	/*Method is never called
	public String toString()
	{
		return "Participante [data_nascimento=" + data_nascimento + ", nome=" + nome + ", nacionalidade=" + nacionalidade + "]\n";
	}*/

}
